package qjc.c_滑动窗口;

import java.util.Arrays;

public class a_无重复字符的最长子串 {
    /**
     * 初始化一个大小为128的数组，用于存储字符的索引，初始值为-1，
     * 初始化滑动窗口的起始位置，初始化最长无重复字符子串的长度，
     * 遍历字符串，如果当前字符的索引在滑动窗口内，则更新起始位置为当前字符的索引+1，
     * 更新最长无重复字符子串的长度
     */
    public int lengthOfLongestSubstring(String s) {
        int[] map = new int[128];
        Arrays.fill(map,-1);
        int begin = 0;
        int maxLength = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(map[c] != -1){
                begin = Math.max(begin,map[c] + 1);
            }
            map[c] = i;
            maxLength = Math.max(maxLength, i - begin + 1);
        }
        return maxLength;
    }

}
